package com.penghaisoft.microwms.materialhand.web.insidewarehouse.service;

import java.util.List;

import com.penghaisoft.microwms.common.dto.RawCountingDto;
import com.penghaisoft.microwms.common.dto.Resp;
import com.penghaisoft.microwms.common.wms.model.RawCountingDifference;
import com.penghaisoft.microwms.common.wms.model.RawCountingRecords;
import com.penghaisoft.microwms.common.wms.model.RawCountingTask;
import com.penghaisoft.microwms.common.wms.model.RawStorageSn;

/**
 * @ClassName: IMaterialHandInsideWhService
 * @Description: 手持库内服务
 * @author jzh
 * @date 2018年5月25日 下午4:50:03
 */
public interface IMaterialHandInsideWhService {

	/** 
	* @Title: queryRawCountingTask 
	* @Description: 查询盘点单号是否存在  
	* @author jzh 
	*/
	List<RawCountingTask> queryRawCountingTask(RawCountingTask rawCountingTask);

	/** 
	* @Title: updateRawCountingTask 
	* @Description: 将盘点任务状态置为盘点中 
	* @author jzh 
	* @throws 
	*/
	Resp updateRawCountingTask(RawCountingTask rawCountingTask);

	List<RawCountingTask> queryRawCountingTaskByCode(String countingCode);

	/** 
	* @Title: querybarcodeExist 
	* @Description: 根据条码，合同号到rawStorageSn中查询，判断当前条码是否在合同号下
	* @param @param rawStorageSn
	* @param @return  参数说明 
	* @return List<RawStorageSn>    返回类型
	* @author jzh 
	* @throws 
	*/
	List<RawStorageSn> querybarcodeExist(RawStorageSn rawStorageSn);

	/** 
	* @Title: createRawCountingRecords 
	* @Description: 创建盘点记录 
	* @param @param rawCountingRecords
	* @param @return  参数说明 
	* @return Resp    返回类型
	* @author jzh 
	* @throws 
	*/
	Resp createRawCountingRecords(RawCountingRecords rawCountingRecords);

	/** 
	* @Title: queryRawCountingRecordsExist 
	* @Description: 查看这个条码是否已经被盘点了countingCode barcode
	* @param @param rawCountingRecords
	* @param @return  参数说明 
	* @return List<RawCountingRecords>    返回类型
	* @author jzh 
	* @throws 
	*/
	List<RawCountingRecords> queryRawCountingRecordsExist(RawCountingRecords rawCountingRecords);

	/** 
	* @Title: querCountByCountingCode 
	* @Description: 根据盘点单号在盘点记录表中查询已盘点数量 
	* @param @param countingCode
	* @param @return  参数说明 
	* @return int    返回类型
	* @author jzh 
	* @throws 
	*/
	int querCountByCountingCode(String countingCode);

	/** 
	* @Title: queryLose 
	* @Description: 根据盘点单号，合同号 查询盘亏数据 
	* @param @param rawCountingDto
	* @param @return  参数说明 
	* @return List<RawStorageSn>    返回类型
	* @author jzh 
	* @throws 
	*/
	List<RawStorageSn> queryLose(RawCountingDto rawCountingDto);

	/** 
	* @Title: createRawCountingDifference 
	* @Description:创建盘点差异 
	* @param @param rawCountingDifference
	* @param @return  参数说明 
	* @return Resp    返回类型
	* @author jzh 
	* @throws 
	*/
	Resp createRawCountingDifference(RawCountingDifference rawCountingDifference);

	/** 
	* @Title: queryWin 
	* @Description: 根据盘点单号，合同号 查询盘赢数据 
	* @param @param rawCountingDto
	* @param @return  参数说明 
	* @return List<RawCountingRecords>    返回类型
	* @author jzh 
	* @throws 
	*/
	List<RawCountingRecords> queryWin(RawCountingDto rawCountingDto);

	/** 
	* @Title: updateRawCountingTaskFinish 
	* @Description: 将盘点任务状态置为盘点结束 
	* @param @param rawCountingTask
	* @param @return  参数说明 
	* @return Resp    返回类型
	* @author jzh 
	* @throws 
	*/
	Resp updateRawCountingTaskFinish(RawCountingTask rawCountingTask);

	/**
	 * @Title findRawStorageSnAbs
	 * @Description 查询库存明细列表（数量取绝对值）
	 * @author copy@luoteng
	 * @date 2018年6月4日:下午5:28:41
	 * @param rawStorageSn
	 * @return List<RawStorageSn>
	 */
	public List<RawStorageSn> findRawStorageSnAbs(RawStorageSn rawStorageSn);

	/**
	 * @wzhg 1867 修改库存明细表中条码状态
	 * @param storageSn
	 * @return
     */
	Integer updateFlagByCode(RawStorageSn storageSn);

	/** 
	* @Title: updateRawStorageSnWl 
	* @Description: 修改库位
	* @param @param rawStorageSn
	* @param @return  参数说明 
	* @return Resp    返回类型
	* @author jzh 
	* @throws 
	*/
	Resp updateRawStorageSnWl(RawStorageSn rawStorageSn);

	Resp updateRawStorageSn(RawStorageSn rawStorageSn);

}
